home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 11 / Cream of the Crop 11-2.iso / extra_2 / bwdev300.zip / BLUEWAVE.INC < prev    next >
Text File  |  1995-11-30  |  52KB  |  863 lines

  1. (*****************************************************************************)
  2. (*                                                                           *)
  3. (*           The Blue Wave Offline Mail System Packet Structures             *)
  4. (*   Copyright 1990-1995 by Cutting Edge Computing.  All rights reserved.    *)
  5. (*                        Created by George Hatchew                          *)
  6. (*                                                                           *)
  7. (*                      Version 3 - November 30, 1995                        *)
  8. (*                                                                           *)
  9. (*        ---------------------------------------------------------          *)
  10. (*            DISTRIBUTION OF THIS FILE IS LIMITED BY THE TERMS              *)
  11. (*           SPECIFIED IN THE BLUE WAVE STRUCTURE DOCUMENTATION!             *)
  12. (*        ---------------------------------------------------------          *)
  13. (*                                                                           *)
  14. (*   NOTE:  Refer to BLUEWAVE.H and the Blue Wave structure documentation    *)
  15. (*          for additional comments and information.                         *)
  16. (*                                                                           *)
  17. (*****************************************************************************)
  18.  
  19. const
  20.   PACKET_LEVEL            = 3;      (* Mail packet revision level  *)
  21.   ORIGINAL_INF_HEADER_LEN = 1230;   (* Original *.INF header len   *)
  22.   ORIGINAL_INF_AREA_LEN   = 80;     (* Original *.INF area rec len *)
  23.   ORIGINAL_MIX_STRUCT_LEN = 14;     (* Original *.MIX record len   *)
  24.   ORIGINAL_FTI_STRUCT_LEN = 186;    (* Original *.FTI record len   *)
  25.  
  26. (*---------------------------------------------------------------------------*)
  27.  
  28. (*  Bit-masks for INF_HEADER.UFLAGS field  *)
  29.  
  30. type
  31.   inf_hdr_uflags =
  32.   (
  33.     INF_HOTKEYS     ,           (* User uses "hotkeys" in door prompts   *)
  34.     INF_XPERT       ,           (* Short menus displayed in door         *)
  35.     INF_UFLAGS_RES1 ,           (* RESERVED -- DO NOT USE!               *)
  36.     INF_GRAPHICS    ,           (* Enable ANSI control sequences in door *)
  37.     INF_NOT_MY_MAIL ,           (* Do not bundle mail from user          *)
  38.     INF_EXT_INFO    ,           (* Download extended info with messages  *)
  39.                                 (*   (VERSION 3 AND LATER ONLY)          *)
  40.     INF_NUMERIC_EXT ,           (* Use numeric extensions on packets     *)
  41.                                 (*   (VERSION 3 AND LATER ONLY)          *)
  42.     INF_UFLAGS_RES2 ,           (* RESERVED -- DO NOT USE!               *)
  43.     INF_UFLAGS_RES3 ,           (* RESERVED -- DO NOT USE!               *)
  44.     INF_UFLAGS_RES4 ,           (* RESERVED -- DO NOT USE!               *)
  45.     INF_UFLAGS_RES5 ,           (* RESERVED -- DO NOT USE!               *)
  46.     INF_UFLAGS_RES6 ,           (* RESERVED -- DO NOT USE!               *)
  47.     INF_UFLAGS_RES7 ,           (* RESERVED -- DO NOT USE!               *)
  48.     INF_UFLAGS_RES8 ,           (* RESERVED -- DO NOT USE!               *)
  49.     INF_UFLAGS_RES9 ,           (* RESERVED -- DO NOT USE!               *)
  50.     INF_UFLAGS_RES10            (* RESERVED -- DO NOT USE!               *)
  51.   );
  52.  
  53. (*  Bit-masks for INF_HEADER.NETMAIL_FLAGS field  *)
  54.  
  55. type
  56.   inf_hdr_netmail =
  57.   (
  58.     INF_NETMAIL_RES1,           (* RESERVED -- DO NOT USE!     *)
  59.     INF_CAN_CRASH   ,           (* Allow Crash status          *)
  60.     INF_NETMAIL_RES2,           (* RESERVED -- DO NOT USE!     *)
  61.     INF_NETMAIL_RES3,           (* RESERVED -- DO NOT USE!     *)
  62.     INF_CAN_ATTACH  ,           (* Allow File Attach messages  *)
  63.     INF_NETMAIL_RES4,           (* RESERVED -- DO NOT USE!     *)
  64.     INF_NETMAIL_RES5,           (* RESERVED -- DO NOT USE!     *)
  65.     INF_CAN_KSENT   ,           (* Allow Kill/Sent status      *)
  66.     INF_NETMAIL_RES6,           (* RESERVED -- DO NOT USE!     *)
  67.     INF_CAN_HOLD    ,           (* Allow Hold status           *)
  68.     INF_CAN_IMM     ,           (* Allow Immediate status      *)
  69.     INF_CAN_FREQ    ,           (* Allow File Request messages *)
  70.     INF_CAN_DIRECT  ,           (* Allow Direct status         *)
  71.     INF_NETMAIL_RES7,           (* RESERVED -- DO NOT USE!     *)
  72.     INF_NETMAIL_RES8,           (* RESERVED -- DO NOT USE!     *)
  73.     INF_NETMAIL_RES9            (* RESERVED -- DO NOT USE!     *)
  74.   );
  75.  
  76. (*  Bit-masks for INF_HEADER.CTRL_FLAGS field  *)
  77.  
  78. type
  79.   inf_hdr_ctrl =
  80.   (
  81.     INF_NO_CONFIG ,             (* Do not allow offline configuration *)
  82.     INF_NO_FREQ   ,             (* Do not allow file requesting       *)
  83.     INF_CTRL_RES1 ,             (* RESERVED -- DO NOT USE!            *)
  84.     INF_CTRL_RES2 ,             (* RESERVED -- DO NOT USE!            *)
  85.     INF_CTRL_RES3 ,             (* RESERVED -- DO NOT USE!            *)
  86.     INF_CTRL_RES4 ,             (* RESERVED -- DO NOT USE!            *)
  87.     INF_CTRL_RES5 ,             (* RESERVED -- DO NOT USE!            *)
  88.     INF_CTRL_RES6 ,             (* RESERVED -- DO NOT USE!            *)
  89.     INF_CTRL_RES7 ,             (* RESERVED -- DO NOT USE!            *)
  90.     INF_CTRL_RES8 ,             (* RESERVED -- DO NOT USE!            *)
  91.     INF_CTRL_RES9 ,             (* RESERVED -- DO NOT USE!            *)
  92.     INF_CTRL_RES10,             (* RESERVED -- DO NOT USE!            *)
  93.     INF_CTRL_RES11,             (* RESERVED -- DO NOT USE!            *)
  94.     INF_CTRL_RES12,             (* RESERVED -- DO NOT USE!            *)
  95.     INF_CTRL_RES13,             (* RESERVED -- DO NOT USE!            *)
  96.     INF_CTRL_RES14              (* RESERVED -- DO NOT USE!            *)
  97.   );
  98.  
  99. (*  Values for INF_HEADER.FILE_LIST_TYPE field  *)
  100.  
  101. const
  102.   INF_FLIST_NONE = 0;           (* Door does not generate a list file  *)
  103.   INF_FLIST_TEXT = 1;           (* Door generates plain text list file *)
  104.   INF_FLIST_ANSI = 2;           (* Door generates ANSI list file       *)
  105.  
  106. type
  107.   INF_HEADER =
  108.   record
  109.     ver:byte;                   (* Packet version type (currently 2)        *)
  110.     readerfiles:                (* Files to be displayed by reader          *)
  111.       array[1..5] of
  112.       array[1..13] of byte;
  113.     regnum:                     (* User's registration number               *)
  114.       array[1..9] of byte;
  115.     mashtype:byte;              (* Currently unused (door fills with 0)     *)
  116.                                 (*   Reserved for Blue Wave reader to store *)
  117.                                 (*   the compression type the packet uses.  *)
  118.     loginname:                  (* Name user types at BBS login             *)
  119.       array[1..43] of byte;
  120.     aliasname:                  (* User's "other" name                      *)
  121.       array[1..43] of byte;
  122.     password:                   (* Password                                 *)
  123.       array[1..21] of byte;     (*   All bytes should be the actually ASCII *)
  124.                                 (*   value plus 10.  Lame security, yes,    *)
  125.                                 (*   but it does prevent "TYPE *.INF" from  *)
  126.                                 (*   showing the password.                  *)
  127.     passtype:byte;              (* Password type                            *)
  128.                                 (*   0=none 1=door 2=reader 3=both          *)
  129.     zone:word;                  (* Main network address of host BBS         *)
  130.     net:word;                   (*   (zone:net/node.point)                  *)
  131.     node:word;
  132.     point:word;
  133.     sysop:                      (* Name of SysOp of host BBS                *)
  134.       array[1..41] of byte;
  135.     ctrl_flags:                 (* Flags to control reader capabilities     *)
  136.       set of inf_hdr_ctrl;      (*   (VERSION 3 AND LATER ONLY)             *)
  137.     systemname:                 (* Name of host BBS                         *)
  138.       array[1..65] of byte;
  139.     maxfreqs:byte;              (* Max number of file requests allowed      *)
  140.     is_QWK:word;                (* Whether *.INF belongs to a QWK packet    *)
  141.     obsolete2:                  (* OBSOLETE -- DO NOT USE!                  *)
  142.       array[1..4] of byte;
  143.     uflags:                     (* Bit-mapped door options/toggles          *)
  144.       set of inf_hdr_uflags;
  145.     keywords:                   (* User's entire set of door keywords       *)
  146.       array[1..10] of
  147.       array[1..21] of byte;
  148.     filters:                    (* User's entire set of door filters        *)
  149.       array[1..10] of
  150.       array[1..21] of byte;
  151.     macros:                     (* User's door bundling command macros      *)
  152.       array[1..3] of
  153.       array[1..80] of byte;
  154.     netmail_flags:              (* Bit-mapped NetMail options               *)
  155.       set of inf_hdr_netmail;
  156.     credits:word;               (* NetMail credits                          *)
  157.     debits:word;                (* NetMail debits                           *)
  158.     can_forward:boolean;        (* 0=Message forwarding not allowed         *)
  159.     inf_header_len:word;        (* Size of INF_HEADER structure             *)
  160.     inf_areainfo_len:word;      (* Size of INF_AREA_INFO structure          *)
  161.     mix_structlen:word;         (* Size of MIX_REC structure                *)
  162.     fti_structlen:word;         (* Size of FTI_REC structure                *)
  163.     uses_upl_file:boolean;      (* If this field is not zero, the door that *)
  164.                                 (*   created this packet can receive reply  *)
  165.                                 (*   packets in the new *.UPL file format.  *)
  166.                                 (*   Otherwise, the old *.UPI and *.NET     *)
  167.                                 (*   files must be used.                    *)
  168.     from_to_len:byte;           (* The maximum length of the FROM: and TO:  *)
  169.                                 (*   fields that the host BBS can support.  *)
  170.                                 (*   If this value is 0 or is greater than  *)
  171.                                 (*   35, then 35 must be used (the upload   *)
  172.                                 (*   file formats only allow for a maximum  *)
  173.                                 (*   of 35 characters).                     *)
  174.     subject_len:byte;           (* The maximum length of the SUBJECT: field *)
  175.                                 (*   that the host BBS can support.  If     *)
  176.                                 (*   this value is 0 or is greater than 71, *)
  177.                                 (*   then 71 must be used (the upload file  *)
  178.                                 (*   formats only allow for a maximum of 71 *)
  179.                                 (*   characters).                           *)
  180.     packet_id:                  (* Original root name of the mail packet,   *)
  181.       array[1..9] of byte;      (*   as specified by the mail door.  All    *)
  182.                                 (*   files in the packet that are created   *)
  183.                                 (*   by the mail door will use this root    *)
  184.                                 (*   name, as will the reader when creating *)
  185.                                 (*   the upload files.  Thus, even if the   *)
  186.                                 (*   packets themselves are renamed to      *)
  187.                                 (*   something completely different, the    *)
  188.                                 (*   mail doors and readers will still be   *)
  189.                                 (*   able to work with the proper files.    *)
  190.     file_list_type:byte;        (* New file listing type                    *)
  191.                                 (* (VERSION 3 AND LATER ONLY)               *)
  192.                                 (*   Specifies the type of new file list    *)
  193.                                 (*   that is generated by the door (see     *)
  194.                                 (*   INF_FLIST_xxx, above).  This field is  *)
  195.                                 (*   intended for use with offline config.  *)
  196.     auto_macro:                 (* Auto-macro indicator flags               *)
  197.       array[1..3] of boolean;   (* (VERSION 3 AND LATER ONLY)               *)
  198.                                 (*   Specifies which macros are auto macros *)
  199.                                 (*   (i.e. execute automatically after mail *)
  200.                                 (*   is scanned).                           *)
  201.     max_packet_size:integer;    (* Maximum size of uncompressed packet      *)
  202.                                 (* (VERSION 3 AND LATER ONLY)               *)
  203.                                 (*   Specifies, in K, the maximum size of   *)
  204.                                 (*   an uncompressed mail packet.  A value  *)
  205.                                 (*   of 0 indicates no maximum length.      *)
  206.                                 (*   This field is intended for use with    *)
  207.                                 (*   offline config.                        *)
  208.     reserved:                   (* RESERVED FOR FUTURE USE                  *)
  209.       array[1..228] of byte;    (*   This field MUST be filled with ASCII   *)
  210.                                 (*   NUL (0x00) characters in order for     *)
  211.                                 (*   future additional features to work     *)
  212.                                 (*   properly!                              *)
  213.   end;
  214.  
  215. (*---------------------------------------------------------------------------*)
  216.  
  217. (*  Bit-masks for INF_AREA_INFO.AREA_FLAGS field  *)
  218.  
  219. type
  220.   inf_area_flags =
  221.   (
  222.     INF_SCANNING       ,        (* On=User is active for area               *)
  223.     INF_ALIAS_NAME     ,        (* On=Alias name, Off=Login name            *)
  224.                                 (*   If ON, use INF_HEADER.ALIASNAME when   *)
  225.                                 (*   addressing new mail or replies for the *)
  226.                                 (*   message area.  If OFF, the reader uses *)
  227.                                 (*   the INF_HEADER.LOGINNAME for this      *)
  228.                                 (*   purpose.                               *)
  229.     INF_ANY_NAME       ,        (* On=Allow any name to be entered          *)
  230.                                 (*   If ON, any name can be entered in the  *)
  231.                                 (*   From: field when addressing new mail   *)
  232.                                 (*   or replies for the message area.  If   *)
  233.                                 (*   OFF, the normal rules apply.           *)
  234.     INF_ECHO           ,        (* On=Network mail, Off=Local mail          *)
  235.     INF_NETMAIL        ,        (* On=E-mail, Off=Conference mail           *)
  236.                                 (*   Refer to the chart below (the values   *)
  237.                                 (*   for the NETWORK_TYPE field) for info   *)
  238.                                 (*   on how these two flags should be set   *)
  239.                                 (*   for message areas.                     *)
  240.     INF_POST           ,        (* On=User can post, Off=User CANNOT post   *)
  241.     INF_NO_PRIVATE     ,        (* On=Private messages are NOT allowed      *)
  242.     INF_NO_PUBLIC      ,        (* On=Public messages are NOT allowed       *)
  243.     INF_NO_TAGLINE     ,        (* On=Taglines are not allowed              *)
  244.     INF_NO_HIGHBIT     ,        (* On=ASCII 1-127 only, Off=ASCII 1-255     *)
  245.                                 (*   If ON, only ASCII values 1 to 127 are  *)
  246.                                 (*   allowed in messages.  If OFF, all      *)
  247.                                 (*   values from 1 to 255 are allowed.  Due *)
  248.                                 (*   to the fact that ASCII value 0 is used *)
  249.                                 (*   in C as a string terminator, the value *)
  250.                                 (*   0 should not be allowed in messages at *)
  251.                                 (*   all.                                   *)
  252.     INF_NOECHO         ,        (* On=User can prevent messages from being  *)
  253.                                 (*   sent through the network               *)
  254.     INF_HASFILE        ,        (* On=User can attach files to messages     *)
  255.     INF_PERSONAL       ,        (* On=User is downloading only personal     *)
  256.                                 (*   msgs in this message area.  The flag   *)
  257.                                 (*   INF_SCANNING also needs to be ON.      *)
  258.                                 (*   (VERSION 3 AND LATER ONLY)             *)
  259.     INF_TO_ALL         ,        (* On=User is downloading messages to "All" *)
  260.                                 (*   and personal messages only in this     *)
  261.                                 (*   area.  The flag INF_SCANNING also      *)
  262.                                 (*   needs to be ON.  INF_PERSONAL should   *)
  263.                                 (*   *not* be set, as this flag implies the *)
  264.                                 (*   downloading of personal messages also. *)
  265.                                 (*   (VERSION 3 AND LATER ONLY)             *)
  266.     INF_AREA_FLAGS_RES1,        (* RESERVED -- DO NOT USE!                  *)
  267.     INF_AREA_FLAGS_RES2         (* RESERVED -- DO NOT USE!                  *)
  268.   );
  269.  
  270. (*  Values for INF_AREA_INFO.NETWORK_TYPE field  *)
  271.  
  272. const
  273.   INF_NET_FIDONET  = 0;         (* FidoNet-style E-mail and conferences     *)
  274.                                 (*   Local     = INF_ECHO=off, NETMAIL=off  *)
  275.                                 (*   EchoMail  = INF_ECHO=on,  NETMAIL=off  *)
  276.                                 (*   GroupMail = INF_ECHO=on,  NETMAIL=off  *)
  277.                                 (*   NetMail   = INF_ECHO=on,  NETMAIL=on   *)
  278.   INF_NET_INTERNET = 1;         (* Internet E-mail and Usenet newsgroups    *)
  279.                                 (*   Local     = INF_ECHO=off, NETMAIL=off  *)
  280.                                 (*   Newsgroup = INF_ECHO=on,  NETMAIL=off  *)
  281.                                 (*   E-mail    = INF_ECHO=on,  NETMAIL=on   *)
  282.  
  283. type
  284.   INF_AREA_INFO =
  285.   record
  286.     areanum:                    (* Area number this record corresponds to  *)
  287.       array[1..6] of byte;
  288.     echotag:                    (* Area tag name (*.BRD name for Telegard) *)
  289.       array[1..21] of byte;
  290.     title:                      (* Area description/title                  *)
  291.       array[1..50] of byte;
  292.     area_flags:                 (* Bit-mapped area options                 *)
  293.       set of inf_area_flags;
  294.     network_type:byte;          (* Network mail type (see above)           *)
  295.   end;
  296.  
  297. (*---------------------------------------------------------------------------*)
  298.  
  299. type
  300.   MIX_REC =
  301.   record
  302.     areanum:                (* Area number this record corresponds to        *)
  303.       array[1..6] of byte;  (*   This is the ASCII representation of the     *)
  304.                             (*   actual area number shown on the host BBS.   *)
  305.     totmsgs:word;           (* Total number of messages for this area        *)
  306.     numpers:word;           (* Total number of personal messages in area     *)
  307.     msghptr:longint;        (* Pointer to first message header in *.FTI file *)
  308.   end;
  309.  
  310. (*---------------------------------------------------------------------------*)
  311.  
  312. (*  Bit-masks for FTI_REC.FLAGS field  *)
  313.  
  314. type
  315.   fti_rec_flags =
  316.   (
  317.     FTI_MSGPRIVATE  ,           (* Private = For addressee ONLY         *)
  318.     FTI_MSGCRASH    ,           (* Crash = High priority mail           *)
  319.     FTI_MSGREAD     ,           (* Read = Message read by addressee     *)
  320.     FTI_MSGSENT     ,           (* Sent = Message sent                  *)
  321.     FTI_MSGFILE     ,           (* File Attach = Send file(s)           *)
  322.     FTI_MSGFWD      ,           (* Forward = Message to/from others     *)
  323.     FTI_MSGORPHAN   ,           (* Orphan = Message destination unknown *)
  324.     FTI_MSGKILL     ,           (* Kill/Sent = Delete after sending     *)
  325.     FTI_MSGLOCAL    ,           (* Local = Message originated here      *)
  326.     FTI_MSGHOLD     ,           (* Hold = Hold for pickup, don't send   *)
  327.     FTI_MSGIMMEDIATE,           (* Immediate = Send message NOW         *)
  328.     FTI_MSGFRQ      ,           (* File Request = Request file(s)       *)
  329.     FTI_MSGDIRECT   ,           (* Direct = Send direct, no routing     *)
  330.     FTI_MSGUNUSED1  ,           (*                                      *)
  331.     FTI_MSGUNUSED2  ,           (*                                      *)
  332.     FTI_MSGURQ                  (* Update Request = Req updated file(s) *)
  333.   );
  334.  
  335. type
  336.   FTI_REC =
  337.   record
  338.     mfrom:                  (* Person message is from                       *)
  339.       array[1..36] of byte;
  340.     mto:                    (* Person message is to                         *)
  341.       array[1..36] of byte;
  342.     subject:                (* Subject/title of message                     *)
  343.       array[1..72] of byte;
  344.     date:                   (* Origin date of message                       *)
  345.       array[1..20] of byte; (*   Depending on the host BBS's date storage   *)
  346.                             (*   format, the EXACT format of this field     *)
  347.                             (*   will change.  Some will take all 19 bytes, *)
  348.                             (*   others may take only 10.                   *)
  349.     msgnum:word;            (* Number of THIS message on BBS                *)
  350.     replyto:word;           (* "This is a reply to #xx"                     *)
  351.                             (*   Not used for every message.  When non-     *)
  352.                             (*   zero, there is a previous message in       *)
  353.                             (*   the thread.                                *)
  354.     replyat:word;           (* "There is a reply at #xx"                    *)
  355.                             (*   Not used for every message.  When non-     *)
  356.                             (*   zero, there is a reply to this message.    *)
  357.     msgptr:longint;         (* Offset to start of message in *.DAT file     *)
  358.                             (*   Seek to this exact offset in the *.DAT     *)
  359.                             (*   file, then read "msglength" bytes from     *)
  360.                             (*   the file to load the entire message text.  *)
  361.     msglength:longint;      (* Length of message text (in bytes)            *)
  362.     flags:                  (* Bit-mapped message status flags              *)
  363.       set of fti_rec_flags;
  364.     orig_zone:word;         (* Origin address of message                    *)
  365.                             (*   These three fields will most likely be 0,  *)
  366.                             (*   unless the current message belongs to a    *)
  367.                             (*   NetMail message base.                      *)
  368.     orig_net:word;
  369.     orig_node:word;
  370.   end;
  371.  
  372. (*---------------------------------------------------------------------------*)
  373.  
  374. (*  Bit-masks for MSG_REC.ATTR field  *)
  375.  
  376. type
  377.   msg_rec_attr =
  378.   (
  379.     MSG_NET_PRIVATE  ,          (* Private                *)
  380.     MSG_NET_CRASH    ,          (* Crash mail             *)
  381.     MSG_NET_RECEIVED ,          (* Received               *)
  382.     MSG_NET_SENT     ,          (* Sent                   *)
  383.     MSG_NET_FATTACH  ,          (* File attached          *)
  384.     MSG_NET_INTRANSIT,          (* In-transit             *)
  385.     MSG_NET_ORPHAN   ,          (* Orphaned               *)
  386.     MSG_NET_KILL     ,          (* Kill after sending     *)
  387.     MSG_NET_LOCAL    ,          (* Local message          *)
  388.     MSG_NET_HOLD     ,          (* Hold for pickup        *)
  389.     MSG_NET_RESERVED ,          (* RESERVED               *)
  390.     MSG_NET_FREQ     ,          (* File request           *)
  391.     MSG_NET_RREQ     ,          (* Return receipt request *)
  392.     MSG_NET_RECEIPT  ,          (* Return receipt message *)
  393.     MSG_NET_AREQ     ,          (* Audit request          *)
  394.     MSG_NET_FUREQ               (* File update request    *)
  395.   );
  396.  
  397. type
  398.   MSG_REC =
  399.   record
  400.     mfrom:              (* Person message is from                           *)
  401.       array[1..36] of byte;
  402.     mto:                (* Person message is to                             *)
  403.       array[1..36] of byte;
  404.     subj:               (* Subject/title of message                         *)
  405.       array[1..72] of byte;
  406.     date:               (* Creation date/time                               *)
  407.       array[1..20] of   (*   This date/time is usually in either of the     *)
  408.       byte;             (*   Fido-sanctioned formats "DD MMM YY  HH:MM:SS"  *)
  409.                         (*   or "WWW DD MMM YY HH:MM", but due to the       *)
  410.                         (*   chaotic nature of FidoNet-compatible software, *)
  411.                         (*   this CANNOT be relied upon!                    *)
  412.     times:word;         (* Number of times read (fairly obsolete)           *)
  413.     dest:word;          (* Destination node (of net/node)                   *)
  414.     orig:word;          (* Origin node (of net/node)                        *)
  415.     cost:word;          (* Cost of sending message (usually in US cents)    *)
  416.     orig_net:word;      (* Origin net (of net/node)                         *)
  417.     destnet:word;       (* Destination net (of net/node)                    *)
  418.     unused1:longint;    (* Undefined                                        *)
  419.     unused2:longint;    (*   Some software (Opus and Maximus, for example)  *)
  420.                         (*   uses these fields to store the sent/received   *)
  421.                         (*   date/time as bit-packed fields, using the same *)
  422.                         (*   format used in MS-DOS directory entries.       *)
  423.     reply:word;         (* Message # that this message replies to           *)
  424.     attr:               (* Message attributes and behavior flags            *)
  425.       set of msg_rec_attr;
  426.     up:word;            (* Message # that replies to this message           *)
  427.   end;
  428.  
  429. (*---------------------------------------------------------------------------*)
  430.  
  431. (*  Bit-masks for XTI_REC.FLAGS field  *)
  432.  
  433. type
  434.   xti_flags =
  435.   (
  436.     XTI_HAS_READ   ,            (* Message has been read            *)
  437.     XTI_HAS_REPLIED,            (* Message has been replied to      *)
  438.     XTI_IS_PERSONAL,            (* Message is personal              *)
  439.     XTI_IS_TAGGED  ,            (* Message has been 'tagged'        *)
  440.     XTI_HAS_SAVED  ,            (* Message has been saved           *)
  441.     XTI_HAS_PRINTED,            (* Message has been printed         *)
  442.     XTI_FLAGS_RES1 ,            (* RESERVED -- DO NOT USE!          *)
  443.     XTI_FLAGS_RES2              (* RESERVED -- DO NOT USE!          *)
  444.   );
  445.  
  446. (*  Bit-masks for XTI_REC.MARKS field  *)
  447.  
  448. type
  449.   xti_marks =
  450.   (
  451.     XTI_MARK_SAVE  ,            (* Message marked for saving   *)
  452.     XTI_MARK_REPLY ,            (* Message marked for replying *)
  453.     XTI_MARK_PRINT ,            (* Message marked for printing *)
  454.     XTI_MARK_DELETE,            (* Message marked for deletion *)
  455.     XTI_MARK_RES1  ,            (* RESERVED -- DO NOT USE!     *)
  456.     XTI_MARK_RES2  ,            (* RESERVED -- DO NOT USE!     *)
  457.     XTI_MARK_RES3  ,            (* RESERVED -- DO NOT USE!     *)
  458.     XTI_MARK_RES4               (* RESERVED -- DO NOT USE!     *)
  459.   );
  460.  
  461. type
  462.   XTI_REC =
  463.   record
  464.     flags:set of xti_flags;   (* Bit-mapped message flags   *)
  465.     marks:set of xti_marks;   (* Bit-mapped message markers *)
  466.   end;
  467.  
  468. (*---------------------------------------------------------------------------*)
  469.  
  470. type
  471.   NET_REC =
  472.   record
  473.     msg:MSG_REC;            (* The Fido-style *.MSG header                *)
  474.     fname:                  (* Filename the message text is in            *)
  475.       array[1..13] of byte;
  476.     echotag:                (* NetMail area tag (*.BRD name for Telegard) *)
  477.       array[1..21] of byte;
  478.     zone:word;              (* Destination zone (of zone:net/node.point)  *)
  479.     point:word;             (* Destination point (of zone:net/node.point) *)
  480.     unix_date:longint;      (* Date/time of message                       *)
  481.                             (*   This Unix-style date/time value (number  *)
  482.                             (*   of seconds since 01/01/70) is converted  *)
  483.                             (*   to the date/time storage method used by  *)
  484.                             (*   the host BBS.                            *)
  485.   end;
  486.  
  487. (*---------------------------------------------------------------------------*)
  488.  
  489. type
  490.   UPI_HEADER =
  491.   record
  492.     regnum:             (* Reader registration number                   *)
  493.       array[1..9] of byte;
  494.     vernum:             (* Reader version number                        *)
  495.       array[1..13] of   (*   All bytes should be the actually ASCII     *)
  496.       byte;             (*   value plus 10.  Lame security, yes, but it *)
  497.                         (*   does prevent "TYPE *.UPI" from showing the *)
  498.                         (*   version number.                            *)
  499.     future:             (* RESERVED FOR FUTURE USE                      *)
  500.       array[1..33] of byte;
  501.   end;
  502.  
  503. (*  Bit-masks for UPI_REC.FLAGS field  *)
  504.  
  505. type
  506.   upi_flags =
  507.   (
  508.     UPI_RES1   ,                (* RESERVED FOR FUTURE USE                   *)
  509.     UPI_RES2   ,                (* RESERVED FOR FUTURE USE                   *)
  510.     UPI_RES3   ,                (* RESERVED FOR FUTURE USE                   *)
  511.     UPI_RES4   ,                (* RESERVED FOR FUTURE USE                   *)
  512.     UPI_RES5   ,                (* RESERVED FOR FUTURE USE                   *)
  513.     UPI_RES6   ,                (* RESERVED FOR FUTURE USE                   *)
  514.     UPI_PRIVATE,                (* Message is PRIVATE                        *)
  515.     UPI_NO_ECHO                 (* Message is NOT to be echoed               *)
  516.                                 (*   This feature is not yet implemented in  *)
  517.                                 (*   the Blue Wave reader or doors, as none  *)
  518.                                 (*   of the currently supported BBS software *)
  519.                                 (*   has support for this feature.           *)
  520.   );
  521.  
  522. type
  523.   UPI_REC =
  524.   record
  525.     mfrom:              (* Person message is from                     *)
  526.       array[1..36] of byte;
  527.     mto:                (* Person message is to                       *)
  528.       array[1..36] of byte;
  529.     subj:               (* Subject/title of message                   *)
  530.       array[1..72] of byte;
  531.     unix_date:longint;  (* Date/time of message                       *)
  532.                         (*   This Unix-style date/time value (number  *)
  533.                         (*   of seconds since 01/01/70) is converted  *)
  534.                         (*   to the date/time storage method used by  *)
  535.                         (*   the host BBS.                            *)
  536.     fname:              (* Filename the message text is in            *)
  537.       array[1..13] of byte;
  538.     echotag:            (* Area tag name (*.BRD name for Telegard)    *)
  539.       array[1..21] of byte;
  540.     flags:              (* Bit-mapped flags                           *)
  541.       set of upi_flags;
  542.     reedit:byte;        (* INTERNAL USE ONLY!                         *)
  543.                         (*   This flag is used internally by the Blue *)
  544.                         (*   Wave reader.  Doors should ignore this   *)
  545.                         (*   field during reply packet processing.    *)
  546.   end;
  547.  
  548. (*---------------------------------------------------------------------------*)
  549.  
  550. type
  551.   UPL_HEADER =
  552.   record
  553.     regnum:                 (* Reader registration number (if desired)      *)
  554.       array[1..10] of byte;
  555.     vernum:                 (* Reader version number as a string.           *)
  556.       array[1..20] of byte; (*   All bytes should be the actually ASCII     *)
  557.                             (*   value plus 10.  Lame security, yes, but it *)
  558.                             (*   does prevent "TYPE *.UPL" from showing the *)
  559.                             (*   version number.                            *)
  560.                             (*   Examples:  "2.10a Beta"                    *)
  561.                             (*              "2.11"                          *)
  562.     reader_major:byte;      (* Major version of the reader (number to the   *)
  563.                             (*   left of the decimal point)                 *)
  564.     reader_minor:byte;      (* Minor version of the reader (number to the   *)
  565.                             (*   right of the decimal point)                *)
  566.     reader_name:            (* String containing name of the reader, such   *)
  567.       array[1..80] of byte; (*   as "The Blue Wave Offline Mail Reader".    *)
  568.                             (*   This is provided for door programmers that *)
  569.                             (*   wish to display the name of the reader     *)
  570.                             (*   that created the reply packet.  (Filling   *)
  571.                             (*   it is mandatory but using it is optional.) *)
  572.     upl_header_len:word;    (* Size of UPL_HEADER structure                 *)
  573.     upl_rec_len:word;       (* Size of UPL_REC structure                    *)
  574.                             (*   NOTE:  Refer to the INF_HEADER section for *)
  575.                             (*          more information on using the size  *)
  576.                             (*          fields.                             *)
  577.     loginname:              (* Name found in INF_HEADER.LOGINNAME.  This is *)
  578.       array[1..44] of byte; (*   provided for door authors as a security    *)
  579.                             (*   measure to implement as they wish.         *)
  580.     aliasname:              (* Name found in INF_HEADER.ALIASNAME           *)
  581.       array[1..44] of byte;
  582.     reader_tear:            (* String containing abbreviated name of the    *)
  583.       array[1..16] of byte; (*   reader, such as "Blue Wave", "Q-Blue",     *)
  584.                             (*   "Wave Rider", etc.  This is provided for   *)
  585.                             (*   doors programmers that wish to add to the  *)
  586.                             (*   tear line the name of the reader that      *)
  587.                             (*   created the reply packet.  (Filling it is  *)
  588.                             (*   mandatory but using it is optional.)  If   *)
  589.                             (*   this field is blank, the tear line to be   *)
  590.                             (*   generated is left to the discretion of the *)
  591.                             (*   door author.                               *)
  592.     compress_type:byte;     (* Compression type required for mail packet    *)
  593.                             (*   The Blue Wave reader uses this internally  *)
  594.                             (*   to store the compression type required for *)
  595.                             (*   this particular mail packet.               *)
  596.     flags:byte;             (* Reader processing flags                      *)
  597.                             (*   The Blue Wave reader uses this internally  *)
  598.                             (*   to store flags required for later          *)
  599.                             (*   processing.                                *)
  600.                             (*     = $01 = Was a .QWK packet.                *)
  601.                             (*     = $02 = Host requires a *.UPI file        *)
  602.     not_registered:boolean; (* Reader is not registered to user             *)
  603.                             (*   If this byte is set to a non-zero value,   *)
  604.                             (*   the Blue Wave doors will assume that the   *)
  605.                             (*   user's reader was not registered, and will *)
  606.                             (*   place "[NR]" at the end of the tear line.  *)
  607.                             (*   Third-party doors may use this flag for    *)
  608.                             (*   the same purpose; its use is optional by   *)
  609.                             (*   mail readers (especially if you don't care *)
  610.                             (*   whether or not "[NR]" shows up on the tear *)
  611.                             (*   line <grin>).                              *)
  612.     pad:                    (* RESERVED FOR FUTURE USE, and to pad struct   *)
  613.       array[1..33] of byte; (*   out to a 'nice' 256 bytes                  *)
  614.   end;
  615.  
  616. (*---------------------------------------------------------------------------*)
  617.  
  618. (*  Bit-masks for UPL_REC.MSG_ATTR field  *)
  619.  
  620. type
  621.   upl_msg_attr =
  622.   (
  623.     UPL_INACTIVE,               (* Message is INACTIVE                       *)
  624.                                 (*   Doors should NOT attempt to import this *)
  625.                                 (*   message.                                *)
  626.     UPL_PRIVATE ,               (* Message is PRIVATE                        *)
  627.     UPL_NO_ECHO ,               (* Message is NOT to be echoed               *)
  628.                                 (*   This feature is not yet implemented in  *)
  629.                                 (*   the Blue Wave reader or doors, as none  *)
  630.                                 (*   of the currently supported BBS software *)
  631.                                 (*   has support for this feature.           *)
  632.     UPL_HAS_FILE,               (* Message has file "attached" to it         *)
  633.                                 (*   It is up to the door to check the       *)
  634.                                 (*   validity of this flag.  If the file is  *)
  635.                                 (*   contained in the mail packet, great.    *)
  636.                                 (*   If not, the door should probably prompt *)
  637.                                 (*   the user to begin uploading the file    *)
  638.                                 (*   after importing the messages.  (Not yet *)
  639.                                 (*   implemented in the Blue Wave reader.)   *)
  640.     UPL_NETMAIL ,               (* Message is network mail                   *)
  641.                                 (*   Indicates NetMail/E-mail message.  The  *)
  642.                                 (*   NETWORK_TYPE field (see below) will     *)
  643.                                 (*   indicate which fields should be used    *)
  644.                                 (*   for addressing the message.             *)
  645.     UPL_IS_REPLY,               (* Indicates that the message is a reply to  *)
  646.                                 (*   an existing message, rather than being  *)
  647.                                 (*   a completely new message.               *)
  648.     UPL_MRES7   ,               (* RESERVED FOR FUTURE USE                   *)
  649.     UPL_MRES8   ,               (* RESERVED FOR FUTURE USE                   *)
  650.                                 (* All of the other 8 bits of this field are *)
  651.                                 (*   also reserved for future use.  This     *)
  652.                                 (*   should provide for plenty of expansion  *)
  653.                                 (*   for future development.                 *)
  654.     UPL_MSG_RES1,               (* RESERVED FOR FUTURE USE                   *)
  655.     UPL_MSG_RES2,               (* RESERVED FOR FUTURE USE                   *)
  656.     UPL_MSG_RES3,               (* RESERVED FOR FUTURE USE                   *)
  657.     UPL_MSG_RES4,               (* RESERVED FOR FUTURE USE                   *)
  658.     UPL_MSG_RES5,               (* RESERVED FOR FUTURE USE                   *)
  659.     UPL_MSG_RES6,               (* RESERVED FOR FUTURE USE                   *)
  660.     UPL_MSG_RES7,               (* RESERVED FOR FUTURE USE                   *)
  661.     UPL_MSG_RES8                (* RESERVED FOR FUTURE USE                   *)
  662.   );
  663.  
  664. (*  Bit-masks for UPL_REC.NETMAIL_ATTR field  *)
  665.  
  666. type
  667.   upl_net_attr =
  668.   (
  669.     UPL_NRES1       ,           (* RESERVED FOR FUTURE USE             *)
  670.     UPL_NETCRASH    ,           (* Crash = High priority mail          *)
  671.     UPL_NRES2       ,           (* RESERVED FOR FUTURE USE             *)
  672.     UPL_NRES3       ,           (* RESERVED FOR FUTURE USE             *)
  673.     UPL_NETFILE     ,           (* File Attach = Send file(s) listed   *)
  674.                                 (*   in Subject field                  *)
  675.     UPL_NRES4       ,           (* RESERVED FOR FUTURE USE             *)
  676.     UPL_NRES5       ,           (* RESERVED FOR FUTURE USE             *)
  677.     UPL_NETKILL     ,           (* Kill/Sent = Delete after sending    *)
  678.     UPL_NETLOCAL    ,           (* Local = Message originated here     *)
  679.     UPL_NETHOLD     ,           (* Hold = Hold for pickup, do not send *)
  680.     UPL_NETIMMEDIATE,           (* Immediate = Send message NOW        *)
  681.     UPL_NETFRQ      ,           (* File Request = Request file(s)      *)
  682.                                 (*   listed in Subject field           *)
  683.     UPL_NETDIRECT   ,           (* Direct = Send direct, no routing    *)
  684.     UPL_NRES6       ,           (* RESERVED FOR FUTURE USE             *)
  685.     UPL_NRES7       ,           (* RESERVED FOR FUTURE USE             *)
  686.     UPL_NETURQ                  (* Update Request = Request updated    *)
  687.                                 (*   file(s) listed in Subject field   *)
  688.   );
  689.  
  690. (*  Values for UPL_REC.NETWORK_TYPE field  *)
  691.  
  692. const
  693.   UPL_NET_FIDONET  = 0;         (* FidoNet-style E-mail and conferences     *)
  694.                                 (*   UPL_NETMAIL=off - Local, Echo, Group   *)
  695.                                 (*   UPL_NETMAIL=on  - NetMail              *)
  696.   UPL_NET_INTERNET = 1;         (* Internet E-mail and Usenet newsgroups    *)
  697.                                 (*   UPL_NETMAIL=off - Local, Newsgroup     *)
  698.                                 (*   UPL_NETMAIL=on  - E-mail               *)
  699.  
  700. type
  701.   UPL_REC =
  702.   record
  703.     mfrom:                  (* Person message is from                        *)
  704.       array[1..36] of byte; (*   NOTE: Doors should validate this field!     *)
  705.     mto:                    (* Person message is to (non-Internet)           *)
  706.       array[1..36] of byte; (*   For Internet E-mail, the NET_DEST field     *)
  707.                             (*   should be used to store the destination     *)
  708.                             (*   name/address, leaving this field blank.     *)
  709.                             (*   For Usenet newsgroups, this field should be *)
  710.                             (*   left blank, as newsgroups don't use a "To:" *)
  711.                             (*   field.                                      *)
  712.     subj:                   (* Subject/Title of message                      *)
  713.       array[1..72] of byte;
  714.     destzone:word;          (* Destination address (FidoNet only)            *)
  715.                             (*   If the message is not a FidoNet NetMail     *)
  716.                             (*   message, this field (and the subsequent     *)
  717.                             (*   three fields as well) should be set to      *)
  718.                             (*   zero.                                       *)
  719.     destnet:word;
  720.     destnode:word;
  721.     destpoint:word;
  722.     msg_attr:               (* Bit-mapped message attributes                 *)
  723.       set of upl_msg_attr;
  724.     netmail_attr:           (* Bit-mapped NetMail attributes (FidoNet only)  *)
  725.       set of upl_net_attr;  (*   If the message is not a FidoNet NetMail     *)
  726.                             (*   message, this field should not be used.     *)
  727.     unix_date:longint;      (* Date/time of message                          *)
  728.                             (*   This Unix-style date/time value (number     *)
  729.                             (*   of seconds since 01/01/70) is converted to  *)
  730.                             (*   the date/time storage method used by the    *)
  731.                             (*   host BBS.                                   *)
  732.     replyto:longint;        (* This unsigned long word stores the message #  *)
  733.                             (*   that this message is a reply to.  This      *)
  734.                             (*   should be the same as FTI.MSGNUM.  Note,    *)
  735.                             (*   however, that FTI.MSGNUM is a word, so the  *)
  736.                             (*   value should be typecast during assignment  *)
  737.                             (*   (i.e. upl.replyto=longint(fti.msgnum)).  As *)
  738.                             (*   messaging/BBS systems become more complex,  *)
  739.                             (*   FTI.MSGNUM may become obsolete, and a       *)
  740.                             (*   longint variable may be used in its place.  *)
  741.     filename:               (* Filename the message text is in               *)
  742.       array[1..13] of byte; (*   If this file does not exist in the upload   *)
  743.                             (*   packet then doors should consider this an   *)
  744.                             (*   invalid record.                             *)
  745.     echotag:                (* Area tag the message goes in                  *)
  746.       array[1..21] of byte; (*   This must correspond exactly to the         *)
  747.                             (*   INF_AREA_INFO.ECHOTAG field for the message *)
  748.                             (*   area this message belongs to.  Simple area  *)
  749.                             (*   number matching has proven not to work      *)
  750.                             (*   simply because sysops are finicky people,   *)
  751.                             (*   and seem to constantly renumber/change the  *)
  752.                             (*   message area numbers on the host BBS.       *)
  753.                             (*   Using an echotag helps to alleviate this    *)
  754.                             (*   problem.  C_ECHO will be C_ECHO on the BBS, *)
  755.                             (*   whether it is msg area 17 on the host BBS   *)
  756.                             (*   or whether it is area 207. Doors should do  *)
  757.                             (*   a case-INSENSITIVE compare on this field to *)
  758.                             (*   find where the message belongs.             *)
  759.     area_flags:word;        (* The Blue Wave Offline Mail Reader uses this   *)
  760.                             (*   word internally to store the same value as  *)
  761.                             (*   in INF_AREA_INFO.AREA_FLAGS.  The purpose   *)
  762.                             (*   of this word is to hold the original        *)
  763.                             (*   information about the message area so that  *)
  764.                             (*   later message editing processes can be      *)
  765.                             (*   controlled properly.  For example, if a     *)
  766.                             (*   user later wanted to edit this message, the *)
  767.                             (*   reader would know instantly whether this is *)
  768.                             (*   a NETMAIL area, whether PVT messages are    *)
  769.                             (*   allowed, etc.  This allows re-editing of    *)
  770.                             (*   the message, even when there is not a       *)
  771.                             (*   corresponding *.INF file laying around, or  *)
  772.                             (*   the area is not listed in the *.INF file    *)
  773.                             (*   you currently have to work with.  DOOR      *)
  774.                             (*   AUTHORS SHOULD IGNORE THIS FIELD WHEN       *)
  775.                             (*   IMPORTING MESSAGES!                         *)
  776.     f_attach:               (* If the UPL_HAS_FILE flag is set, this field   *)
  777.       array[1..13] of byte; (*   will contain the file name that is attached *)
  778.                             (*   to the message.                             *)
  779.     user_area:              (* User-defined storage.  Doors should ignore    *)
  780.       array[1..6] of byte;  (*   this field, and reader authors should feel  *)
  781.                             (*   free to utilize this field for their own    *)
  782.                             (*   internal use, if necessary.                 *)
  783.     network_type:byte;      (* Indicates the network type.  This field must  *)
  784.                             (*   hold the same value as the NETWORK_TYPE     *)
  785.                             (*   field in INF_AREA_INFO, allowing doors and  *)
  786.                             (*   readers to properly handle the message.     *)
  787.                             (*   (Values duplicated as UPL_NET_xxx, above.)  *)
  788.                             (*   For FidoNet NetMail and Internet E-mail, it *)
  789.                             (*   also indicates which fields should be used  *)
  790.                             (*   for addressing and status information (as   *)
  791.                             (*   indicated in comments above and below).     *)
  792.     net_dest:               (* Network destination address (non-FidoNet)     *)
  793.       array[1..100] of      (*   Internet E-mail messages should use this    *)
  794.       byte;                 (*   field to store the destination address.     *)
  795.   end;
  796.  
  797. (*---------------------------------------------------------------------------*)
  798.  
  799. type
  800.   REQ_REC =
  801.   record
  802.     filename:array[1..13] of byte;    (* Name of file to request *)
  803.   end;
  804.  
  805. (*---------------------------------------------------------------------------*)
  806.  
  807. (*  Bit-masks for PDQ_HEADER.FLAGS field  *)
  808.  
  809. type
  810.   pdq_flags =
  811.   (
  812.     PDQ_HOTKEYS     ,           (* Toggle "hotkeys" in prompts        *)
  813.     PDQ_XPERT       ,           (* Toggle expert mode (menu displays) *)
  814.     PDQ_AREA_CHANGES,           (* Change active message areas        *)
  815.     PDQ_GRAPHICS    ,           (* Toggle IBM 8-bit ASCII characters  *)
  816.     PDQ_NOT_MY_MAIL ,           (* Toggle bundling mail from user     *)
  817.     PDQ_FLAGS_RES1  ,           (* RESERVED FOR FUTURE USE            *)
  818.     PDQ_FLAGS_RES2  ,           (* RESERVED FOR FUTURE USE            *)
  819.     PDQ_FLAGS_RES3  ,           (* RESERVED FOR FUTURE USE            *)
  820.     PDQ_FLAGS_RES4  ,           (* RESERVED FOR FUTURE USE            *)
  821.     PDQ_FLAGS_RES5  ,           (* RESERVED FOR FUTURE USE            *)
  822.     PDQ_FLAGS_RES6  ,           (* RESERVED FOR FUTURE USE            *)
  823.     PDQ_FLAGS_RES7  ,           (* RESERVED FOR FUTURE USE            *)
  824.     PDQ_FLAGS_RES8  ,           (* RESERVED FOR FUTURE USE            *)
  825.     PDQ_FLAGS_RES9  ,           (* RESERVED FOR FUTURE USE            *)
  826.     PDQ_FLAGS_RES10 ,           (* RESERVED FOR FUTURE USE            *)
  827.     PDQ_FLAGS_RES11             (* RESERVED FOR FUTURE USE            *)
  828.   );
  829.  
  830. type
  831.   PDQ_HEADER =
  832.   record
  833.     keywords:                   (* User's entire set of door keywords  *)
  834.       array[1..10] of
  835.       array[1..21] of byte;
  836.     filters:                    (* User's entire set of door filters   *)
  837.       array[1..10] of
  838.       array[1..21] of byte;
  839.     macros:                     (* User's door bundling command macros *)
  840.       array[1..3] of
  841.       array[1..78] of byte;
  842.     password:                   (* Password                            *)
  843.       array[1..21] of byte;
  844.     passtype:byte;              (* Password type                       *)
  845.                                 (*   0=none 1=door 2=reader 3=both     *)
  846.     flags:set of pdq_flags;     (* Bit-mapped flags                    *)
  847.   end;
  848.  
  849. (*---------------------------------------------------------------------------*)
  850.  
  851. type
  852.   PDQ_REC =
  853.   record
  854.     echotag:                (* Echo tag of message area to activate    *)
  855.       array[1..21] of byte; (*   With Telegard systems, this should    *)
  856.                             (*   be the name of the *.BRD file, rather *)
  857.                             (*   than the actual echo tag.             *)
  858.   end;
  859.  
  860. (*---------------------------------------------------------------------------*)
  861.  
  862. (*  end of BLUEWAVE.INC  *)
  863.